package exception;
/**
    异常处理机制try-catch
    语法：
    try{
        代码片段
 }catch(xxxException e){
    当try代码中出现xxxException后的解决办法。
 }
 */
public class TryCatchDemo {
    public static void main(String[] args) {
        System.out.println("程序开始了.....");
        try {
//            String str = null;
           // String str="";
            String str="a";
            System.out.println(str.length());
            System.out.println(str.charAt(0));
            System.out.println(Integer.parseInt(str));
            System.out.println("!!!!!!!!");
        /*
        当str为null时，虚拟机执行下面的代码，发现出现了空指针，于是会
        实例化一个NullPointerException，并将报错的位置设置进去，
        然后将异常抛出。
         */
        }catch(NullPointerException e){
            System.out.println("出现空指针异常");
        }
        //catch可以定义多个，当针对不同异常有不同处理操作时要分别捕获并处理
        catch(StringIndexOutOfBoundsException e){
            System.out.println("出现了字符串下标越界");
        }
        /*
        我们可以捕获超类型异常，通常下面情况会这样做：
        1：当try中出现了几类不同的异常，但是解决办法相同时，可以捕获这些类
            异常的统一超类，进行统一处理
        2：在最后一个catch出捕获Exception可以尽量避免因为一个未知异常导致
            程序中断。
         */
        catch(Exception e){
            System.out.println("反正就是出了个错！");
        }
        System.out.println("程序结束了");

    }
}
